Simplify + fix previous cset (remove_all_shadows() is indeed required :-)
authorSteven Hand <steven@xensource.com>
Wed, 20 Sep 2006 15:52:15 +0000 (16:52 +0100)
committerSteven Hand <steven@xensource.com>
Wed, 20 Sep 2006 15:52:15 +0000 (16:52 +0100)
Signed-off-by: Steven Hand <steven@xensource.com>
xen/arch/x86/mm.c

index 5f9a409831b362ebff9c2839f9b8c523de5fe9ef..94333f0659bbcb49a45bf7b8c4657b6ef7de4c3a 100644 (file)
@@ -1622,8 +1622,7 @@ void put_page_type(struct page_info *page)
             if (shadow_lock_is_acquired(owner))  /* this is a shadow page */
                 return;
 
-            if (!shadow_mode_translate(owner))
-                mark_dirty(owner, page_to_mfn(page));
+            mark_dirty(owner, page_to_mfn(page));
         }
     }
 }
@@ -1985,8 +1984,7 @@ int do_mmuext_op(
                 break;
             }
 
-            if ( shadow_mode_enabled(d) )
-                mark_dirty(d, mfn);
+            mark_dirty(d, mfn);
            
             break;
 
@@ -2005,7 +2003,12 @@ int do_mmuext_op(
                 put_page_and_type(page);
                 put_page(page);
                 if ( shadow_mode_enabled(d) )
+                {
+                    shadow_lock(d);
+                    shadow_remove_all_shadows(v, _mfn(mfn));
+                    shadow_unlock(d);
                     mark_dirty(d, mfn);
+                }
             }
             else
             {